<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="Mantenimientos"></h:outputText>
        </ui:define>
        <ui:define name="cuerpo">

            <p:growl id="message" showDetail="true" />
            <h:form id="form" >  
                <p:growl id="validacionMensaje" showDetail="true" autoUpdate="true"/>
                <p:panel header="Administración de Mantenimientos" style="font-size: small">                                            

                    <table width="100%" border="0">                    
                        <p:commandButton process="@this" style="margin-top: 10px" action="#{mantenimientoBean.cargarNuevo()}" value="Crear" update="@form:dlDialog" oncomplete="PF('dlDialogVar').show()"/>
                    </table> 

                    <p:dataTable id="dtMantenimiento" var="item" value="#{mantenimientoBean.mantenimientos}" widgetVar="tablaMantenimiento"                                                                  
                                 emptyMessage="Sin Datos"
                                 style="margin-top: 10px; font-size: small"                                
                                 paginator="true" rows="10" rowKey="#{item.codMantenimiento}">

                        <f:facet name="header">
                            <p:outputPanel>
                                <h:outputText value="Buscar por todos los criterios:" />
                                <p:inputText id="globalFilter" onkeyup="PF('tablaMantenimiento').filter()" style="width:200px" placeholder="Ingrese la palabra clave"/>
                            </p:outputPanel>
                        </f:facet>                                             

                        <p:column headerText="Código Mantenimiento" filterBy="#{item.codMantenimiento}" >
                            <div align="center">
                                <h:outputText value="#{item.codMantenimiento}"/>
                            </div>
                        </p:column>                                                                        

                        <p:column headerText="Unidad" filterBy="#{item.unidad.numBus}" >
                            <div align="center">
                                <h:outputText value="#{item.unidad.numBus}"/>
                            </div>
                        </p:column>      

                        <p:column headerText="Estado" filterBy="#{item.estado}" >
                            <div align="center">
                                <h:outputText value="#{item.estado ? 'EN ESPERA' : 'FINALIZADO'}"/>
                            </div>
                        </p:column>                                                 

                        <p:column headerText="Herramientas" >                                                        
                            <div align="center">                                
                                <p:commandButton value="Modificar" action="#{mantenimientoBean.cargarModificar()}" update="@form:dlDetalle" 
                                                 process="@this" oncomplete="PF('dlDetalleVar').show()">
                                    <f:setPropertyActionListener value="#{item}" target="#{mantenimientoBean.mantenimiento}" />
                                </p:commandButton>   |
                                <p:commandButton value="Detalles" action="#{mantenimientoBean.cargarDetalle()}" update="@form:dlDialog" 
                                                 process="@this" oncomplete="PF('dlDialogVar').show()">
                                    <f:setPropertyActionListener value="#{item}" target="#{mantenimientoBean.mantenimiento}" />
                                </p:commandButton>                                                               
                            </div>
                        </p:column>                                                            
                    </p:dataTable>

                    <p:dialog dynamic="true" id="dlDialog" resizable="false" header="#{mantenimientoBean.tituloDialogo}" appendTo="@(body)" 
                              widgetVar="dlDialogVar" modal="true" showEffect="fade" hideEffect="fade"
                              style="font-size: small">                      
                        <p:panel  id="dlMecanico" style="text-align:center;">

                            <p:panelGrid columns="2" rendered="#{not empty mantenimientoBean.mantenimiento}" columnClasses="label,value">                                                                                        

                                <p:outputLabel  for="txtMecanico" value="Mecánico Responsable:" />
                                <p:selectOneMenu filter="true" filterMatchMode="startsWith" 
                                                 disabled="#{mantenimientoBean.soloLectura}" 
                                                 id="txtMecanico" value="#{mantenimientoBean.mantenimiento.mecanico}" 
                                                 required="true" requiredMessage="El campo 'Mecánico' es requerido" style="width: 200px" 
                                                 styleClass="menu" panelStyleClass="panel">                                                                        
                                    <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                    <f:selectItems value="#{mecanicoBean.mecanicos}" var="mecanico" 
                                                   itemLabel="#{mecanico.nombre} #{mecanico.apellido}" itemValue="#{mecanico}"/>
                                    <f:converter converterId = "mecanicoConverter"/>                                     
                                </p:selectOneMenu>

                                <p:outputLabel  for="txtUnidad" value="Unidad" />
                                <p:selectOneMenu filter="true" filterMatchMode="startsWith" 
                                                 disabled="#{mantenimientoBean.soloLectura}" 
                                                 id="txtUnidad" value="#{mantenimientoBean.mantenimiento.unidad}" 
                                                 required="true" requiredMessage="El campo 'Unidad' es requerido" style="width: 200px" 
                                                 styleClass="menu" panelStyleClass="panel">                                                                        
                                    <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                    <f:selectItems value="#{unidadBean.unidades}" var="unidad" 
                                                   itemLabel="#{unidad.numBus}/#{unidad.placa}" itemValue="#{unidad}"/>
                                    <f:converter converterId = "unidadConverter"/>                                     
                                </p:selectOneMenu>

                                <p:outputLabel  for="txtTipoMantenimiento" value="Tipo de Mantenimiento" />
                                <p:selectOneMenu filter="true" filterMatchMode="startsWith" 
                                                 disabled="#{mantenimientoBean.soloLectura}" 
                                                 id="txtTipoMantenimiento" value="#{mantenimientoBean.mantenimiento.tipoMantenimiento}" 
                                                 required="true" requiredMessage="El campo 'Tipo de Mantenimiento' es requerido" style="width: 200px" 
                                                 styleClass="menu" panelStyleClass="panel">                                                                        
                                    <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                    <f:selectItems value="#{tipoMantenimientoBean.tipoMantenimientos}" var="tipo" 
                                                   itemLabel="#{tipo.nombre}" itemValue="#{tipo}"/>
                                    <f:converter converterId = "tipoMantenimientoConverter"/>                                     
                                </p:selectOneMenu>

                                <p:outputLabel rendered="#{mantenimientoBean.soloLectura}"   for="txtFechaInicial" value="Fecha Inicial " />
                                <p:calendar  rendered="#{mantenimientoBean.soloLectura}" style=" margin-top: 10px" locale="es"  value="#{mantenimientoBean.mantenimiento.fechaIngreso}"                                                     
                                             size="21" id="txtFechaInicial" pattern="yyyy/dd/MM" mode="popup" showOn="button">
                                    <f:convertDateTime type="date" locale="es_EC" timeZone="America/Guayaquil"  
                                                       dateStyle="default" pattern="yyyy/dd/MM" />
                                </p:calendar>

                                <p:outputLabel rendered="#{mantenimientoBean.soloLectura}"   for="txtFechaFinal" value="Fecha Final " />
                                <p:calendar rendered="#{mantenimientoBean.soloLectura}"  style=" margin-top: 10px" locale="es"  value="#{mantenimientoBean.mantenimiento.fechaIngreso}"                                                     
                                            size="21" id="txtFechaFinal" pattern="yyyy/dd/MM" mode="popup" showOn="button">
                                    <f:convertDateTime type="date" locale="es_EC" timeZone="America/Guayaquil"  
                                                       dateStyle="default" pattern="yyyy/dd/MM" />
                                </p:calendar>

                                <p:outputLabel rendered="#{mantenimientoBean.soloLectura}"  for="txtKilometraje" value="Kilometraje Actual:" />
                                <p:inputText id="txtKilometraje" 
                                             rendered="#{mantenimientoBean.soloLectura}" 
                                             onkeyup="value = value.toUpperCase()"
                                             style="text-align: center" 
                                             value="#{mantenimientoBean.mantenimiento.kilometrajeActual }" 
                                             required="true" 
                                             requiredMessage="El campo 'Kilometraje' es requerido" 
                                             readonly="#{mantenimientoBean.soloLectura}"/>

                                <p:outputLabel rendered="#{mantenimientoBean.soloLectura}" for="txtFechaCreacion" value="Fecha de Creación:" />
                                <p:inputText style="text-align: center" rendered="#{mecanicoBean.soloLectura}" id="txtFechaCreacion"  value="#{mantenimientoBean.mantenimiento.fechaCreacion}" readonly="true">
                                    <f:convertDateTime type="date" locale="es_EC" timeZone="America/Guayaquil"  
                                                       dateStyle="default" pattern="yyyy/dd/MM" />
                                </p:inputText>                                

                                <p:outputLabel rendered="#{mantenimientoBean.activarModificar || mantenimientoBean.soloLectura}" for="txtEstado" value="Estado:" />
                                <p:selectBooleanCheckbox style="text-align: center" rendered="#{mantenimientoBean.activarModificar || mantenimientoBean.soloLectura}" disabled="#{mantenimientoBean.soloLectura}"  id="txtEstado" value="#{mantenimientoBean.mantenimiento.estado}"/>                                

                            </p:panelGrid>
                            <div align="right">
                                <p:outputLabel value = "* Campos Obligatorios"/>
                            </div>
                            <br/>
                            <div align="center">
                                <p:commandButton rendered="#{mantenimientoBean.activarNuevo}" 
                                                 update=":form:dtMantenimiento,@form:dlDialog:dtMantenimiento"                                                 
                                                 oncomplete="PF('dlDetalleVar').show()"
                                                 actionListener="#{mantenimientoBean.guardar()}" partialSubmit="true" process="@form:dlDialog"
                                                 value="Guardar">                                  
                                    <p:confirm header="Confirmación" message="Esta seguro de guardar este registro?" icon="ui-icon-alert" />
                                </p:commandButton>                                                                   
                            </div>
                            <div align="center">
                                <p:commandButton rendered="#{mantenimientoBean.activarModificar}" 
                                                 update=":form:dtMantenimiento,@form:dlDialog:dtMantenimiento"
                                                 actionListener="#{mantenimientoBean.modificar()}"  partialSubmit="true" process="@form:dlDialog"
                                                 value="Modificar">                                  
                                    <p:confirm header="Confirmación" message="Esta seguro de modificar este registro?" icon="ui-icon-alert" />
                                </p:commandButton>                                     
                            </div>                            
                        </p:panel>    
                    </p:dialog>

                    <p:dialog dynamic="true" id="dlDetalle" resizable="false" header="MANTENIMIENTO" appendTo="@(body)" 
                              widgetVar="dlDetalleVar" modal="true" showEffect="fade" hideEffect="fade"
                              style="font-size: small">       

                        <p:panel id="panelMantenimiento" header="Cabecera de Mantenimiento">
                            <p:panelGrid columns="6" >                                                                                        

                                <p:outputLabel for="cabCodigo" value="Código de Mantenimiento:"/>
                                <p:inputText id="cabCodigo" value="#{mantenimientoBean.mantenimiento.codMantenimiento}" readonly="#{true}"/>

                                <p:outputLabel for="cabUnidad" value="Unidad:"/>
                                <p:inputText id="cabUnidad" value="#{mantenimientoBean.mantenimiento.unidad.numBus}" readonly="#{true}"/>

                                <p:outputLabel for="cabTipoMantenimiento" value="Tipo de Mantenimiento:"/>
                                <p:inputText id="cabTipoMantenimiento" value="#{mantenimientoBean.mantenimiento.unidad.numBus}" readonly="#{true}"/>

                                <p:outputLabel for="cabMecanico" value="Mecánico responsable:"/>
                                <p:inputText id="cabMecanico" value="#{mantenimientoBean.mantenimiento.mecanico.nombre} #{mantenimientoBean.mantenimiento.mecanico.apellido}" readonly="#{true}"/>

                                <p:outputLabel for="cabFechaIngreso" value="Fecha de ingreso:"/>
                                <p:inputText id="cabFechaIngreso" value="#{mantenimientoBean.mantenimiento.fechaIngreso}" readonly="#{true}"/>

                                <p:outputLabel for="cabKilometraje" value="Kilometraje actual:"/>
                                <p:inputText id="cabKilometraje" value="#{mantenimientoBean.mantenimiento.kilometrajeActual}" readonly="#{true}"/>

                            </p:panelGrid>

                        </p:panel>

                        <p:panel id="panelDetalle" header="Detalle de Mantenimiento">
                            <p:commandButton process="@this" action="#{mantenimientoBean.cargarNuevoDetalle()}" style="margin-top: 10px" value="Agregar" update="@form:dlEleccion" oncomplete="PF('dlEleccionVar').show()"/>
                            <p:dataTable id="dtDetallesMantenimiento" var="item" value="#{mantenimientoBean.detallesMantenimientos}" widgetVar="tablaDetalleMantenimiento"                                                                  
                                         emptyMessage="Sin Datos"
                                         style="margin-top: 10px; font-size: small"                                
                                         paginator="true" rows="10" rowKey="#{item.codDetalleMantenimiento}">

                                <f:facet name="header">
                                    <p:outputPanel>
                                        <h:outputText value="Buscar por todos los criterios:" />
                                        <p:inputText id="globalFilter" onkeyup="PF('tablaDetalleMantenimiento').filter()" style="width:200px" placeholder="Ingrese la palabra clave"/>
                                    </p:outputPanel>
                                </f:facet>                                             

                                <p:column headerText="Subsistema" filterBy="#{item.tipoActividad.subsistema.nombre}" >
                                    <div align="center">
                                        <h:outputText value="#{item.tipoActividad.subsistema.nombre}"/>
                                    </div>
                                </p:column>                                                                        

                                <p:column headerText="Actividad" filterBy="#{item.tipoActividad.nombre}" >
                                    <div align="center">
                                        <h:outputText value="#{item.tipoActividad.nombre}"/>
                                    </div>
                                </p:column>        

                                <p:column headerText="Repuesto" filterBy="#{item.repuesto.nombre}" >
                                    <div align="center">
                                        <h:outputText value="#{item.repuesto.nombre}"/>
                                    </div>
                                </p:column>        

                                <p:column headerText="Cantidad" filterBy="#{item.cantidad}" >
                                    <div align="center">
                                        <h:outputText value="#{item.cantidad}"/>
                                    </div>
                                </p:column>        

                                <p:column headerText="Rendimiento Esperado" filterBy="#{item.rendimientoEsperado}" >
                                    <div align="center">
                                        <h:outputText value="#{item.rendimientoEsperado}"/>
                                    </div>
                                </p:column>        

                                <p:column headerText="Costo M.O." filterBy="#{item.costoMo}" >
                                    <div align="center">
                                        <h:outputText value="#{item.costoMo}"/>
                                    </div>
                                </p:column>        

                                <p:column headerText="Descripción" filterBy="#{item.descripcion}" >
                                    <div align="center">
                                        <h:outputText value="#{item.descripcion}"/>
                                    </div>
                                </p:column>                                                                                                                                                      
                            </p:dataTable>
                            <p:commandButton process="@this" action="#{mantenimientoBean.finalizarManteniminto()}" 
                                             style="margin-top: 10px" value="Finalizar Mantenimiento" 
                                             update="@form:dlDetalle:dtMantenimiento"/>


                        </p:panel>

                    </p:dialog>

                    <p:dialog dynamic="true" id="dlEleccion" resizable="false" header="Detalle de mantenimiento" appendTo="@(body)" 
                              widgetVar="dlEleccionVar" modal="true" showEffect="fade" hideEffect="fade"
                              style="font-size: small">    

                        <p:panelGrid columns="2" >
                            <p:outputLabel  for="cmbSubsistema" value="Subsistema:" />
                            <p:selectOneMenu filter="true" filterMatchMode="startsWith"                                          
                                             id="cmbSubsistema" value="#{mantenimientoBean.subsistema}" 
                                             required="true" requiredMessage="El campo 'Subsistema' es requerido" style="width: 200px" 
                                             styleClass="menu" panelStyleClass="panel">                                                                        
                                <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                <f:selectItems value="#{subsistemaBean.subsistemas}" var="sub" 
                                               itemLabel="#{sub.nombre}" itemValue="#{sub}"/>
                                <f:converter converterId = "subsistemaConverter"/>    
                                <p:ajax update="cmbTipoActividad" partialSubmit="true" process="@this" />  
                            </p:selectOneMenu>

                            <p:outputLabel  for="cmbTipoActividad" value="Actividad:" />
                            <p:selectOneMenu filter="true" filterMatchMode="startsWith"                                          
                                             id="cmbTipoActividad" value="#{mantenimientoBean.detalleMantenimiento.tipoActividad}"                                              
                                             required="true" requiredMessage="El campo 'Actividad' es requerido" style="width: 200px" 
                                             disabled="#{mantenimientoBean.subsistema eq null ||                                                          
                                                         mantenimientoBean.tiposActividades.size() eq 0}"
                                             styleClass="menu" panelStyleClass="panel">                                                                        
                                <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                <f:selectItems value="#{mantenimientoBean.tiposActividades}" var="actividades" 
                                               itemLabel="#{actividades.nombre}" itemValue="#{actividades}"/>
                                <f:converter converterId = "actividadesConverter"/>                                     
                            </p:selectOneMenu>

                            <p:outputLabel  for="cmbRepuesto" value="Repuesto:" />
                            <p:selectOneMenu filter="true" filterMatchMode="startsWith"  
                                             id="cmbRepuesto" value="#{mantenimientoBean.detalleMantenimiento.repuesto}"                                              
                                             required="true" requiredMessage="El campo 'Subsistema' es requerido" style="width: 200px"                                              
                                             styleClass="menu" panelStyleClass="panel">                                                                        
                                <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                <f:selectItems value="#{repuestoBean.repuestos}" var="repuestos" 
                                               itemLabel="#{repuestos.nombre}" itemValue="#{repuestos}"/>
                                <f:converter converterId = "repuestoConverter"/>                                     
                            </p:selectOneMenu>


                            <p:outputLabel  for="txtCantidad" value="Cantidad:" />
                            <p:spinner style="width: 200px" id="txtCantidad" 
                                       min="0" max="100" 
                                       value="#{mantenimientoBean.detalleMantenimiento.cantidad}" 
                                       required="true" requiredMessage="El campo 'Cantidad:' es requerido"
                                       readonly="#{repuestoBean.soloLectura}" />               

                            <p:outputLabel  for="cmbMecanico" value="Mecánico Responsable:" />
                            <p:selectOneMenu filter="true" filterMatchMode="startsWith" 
                                             disabled="#{mantenimientoBean.soloLectura}" 
                                             id="cmbMecanico" value="#{mantenimientoBean.detalleMantenimiento.mecanico}" 
                                             required="true" requiredMessage="El campo 'Mecánico' es requerido" style="width: 200px" 
                                             styleClass="menu" panelStyleClass="panel">                                                                        
                                <f:selectItem itemLabel="Seleccione..." itemValue="#{null}" noSelectionOption="true" />
                                <f:selectItems value="#{mecanicoBean.mecanicos}" var="mecanico" 
                                               itemLabel="#{mecanico.nombre} #{mecanico.apellido}" itemValue="#{mecanico}"/>
                                <f:converter converterId = "mecanicoConverter"/>                                     
                            </p:selectOneMenu>
                            
                            <p:outputLabel  for="txtCosto" value="Mano de Obra:" />
                            <p:spinner style="width: 200px" id="txtCosto" prefix="$" 
                                       min="0" stepFactor="1" 
                                       value="#{mantenimientoBean.detalleMantenimiento.costoMo}" 
                                       required="true" requiredMessage="El campo 'Mano de Obra' es requerido"
                                       readonly="#{repuestoBean.soloLectura}" /> 

                            <p:outputLabel  for="txtRendimiento" value="Rendimiento Esperado:" />
                            <p:spinner style="width: 200px" id="txtRendimiento" 
                                       min="0" stepFactor="100" 
                                       value="#{mantenimientoBean.detalleMantenimiento.rendimientoEsperado}" 
                                       required="true" requiredMessage="El campo 'Rendimiento Esperado' es requerido"
                                       readonly="#{repuestoBean.soloLectura}" />

                            <p:outputLabel  for="txtDescripcion" value="Descripción:" />
                            <p:inputTextarea onkeyup="value = value.toUpperCase();" 
                                             style="width: 200px" id="txtDescripcion" 
                                             value="#{mantenimientoBean.detalleMantenimiento.descripcion}" 
                                             required="true" requiredMessage="El campo 'Descripcion' es requerido"/>                                
                        </p:panelGrid>                        
                        <div align="center">
                            <p:commandButton update=":form:dtDetallesMantenimiento,@form:dlEleccion:dtDetallesMantenimiento"
                                             actionListener="#{mantenimientoBean.agregarDetalle()}"  partialSubmit="true" process="@form:dlEleccion"
                                             value="Agregar Detalle">                                  
                                <p:confirm header="Confirmación" message="Esta seguro de modificar este registro?" icon="ui-icon-alert" />
                            </p:commandButton>                                                                 
                        </div>
                    </p:dialog>

                </p:panel>
                <p:confirmDialog style="font-size: small" global="true" showEffect="fade" hideEffect="explode">
                    <p:commandButton value="Si" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                    <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
                </p:confirmDialog>
            </h:form>
        </ui:define>
    </ui:composition>
</html>